package hotel.meituan.oversea.api.entity;

import lombok.Data;
import org.springframework.data.annotation.Id;

import javax.persistence.Table;
import java.io.Serializable;
import java.util.Date;

/**
 * 多个接口涉及订单状态相关数据保存日志
 *
 * [预约下单接口 hotel.order.check ]响应参数，状态相关数据保存
 * [状态变更通知 hotel.order.status.change.callback ]请求数据，状态相关数据保存
 *
 * @Author qiuyy
 * @Date 2020/5/15
 **/
@Data
@Table(name = "mt_hotel_order_state_history")
public class MtHotelOrderStateHistory implements Serializable {
    private static final long serialVersionUID = 7481938980031548108L;
    /**
     * 主键id
     */
    @Id
    private String id;
    /**
     * 上游返回订单id
     */
    private String mtOrderId;
    /**
     * 携程id
     */
    private String swOrderId;
    /**
     * 主订单id
     */
    private String masterOrderId;
    /**
     * 分销商订单ID（很好办提供）
     * 后面其他接口涉及订单的返回是mtOrderId，参数的上送是mtOrderId和distributorOrderId
     */
    private String mtDistributorOrderId;
    /**
     * 酒店ID
     */
    private String mtHotelId;
    /**
     * 产品ID。
     */
    private String mtGoodsId;
    /**
     * [状态变更通知]：
     * 订单状态：
     * 21 预订成功 book_suc
     * 22 预订失败 book_fail
     * 31 取消成功 cancel_suc
     * 40 美团客服介入退款 abort
     * 50 已入住 book_checkin
     * [下单]
     * 结果码：
     * 0 下单成功
     * 1 系统繁忙，请稍后重试
     * 2 产品已变价
     * 3 重复订单, 对应下单失败
     * 4 产品已售完，扣减库存失败
     * 5 账户扣款失败
     * 10 产品被拉黑, 不允许购买
     * 11 该产品如选择预计到店时间在 XXXX 之后的，需支付相应担保金，第一期暂不支持下担保产品的订单!
     * 20 其它
     */
    private Integer statusCode;
    /**
     * 描述
     */
    private String statusDesc;
    /**
     * 接口
     */
    private String method;
    /**
     * 接口名称
     */
    private String methodName;
    /**
     * 额外对象参数对象名称
     */
    private String className;
    /**
     * 额外对象参数json串
     */
    private String classJson;

    /**
     *
     * 美团接口响应订单状态
     * 订单状态：10 hhb订单创建未提交  20 成功提交mt预定中 booking  21 mt预定成功 book_suc   22 mt预定失败 book_fail   30 mt取消中 canceling   31 mt取消成功 cancel_suc
     * 32 mt取消失败 cancel_fail   40 mt已消费退款 abort（美团客服介入后才可能出现此状态）  50 mt已入住 book_checkin
     *
     * 上游返回cdoe对应本地平台的订单状态值（ mt_hotel_order_booking 表 字段 mt_order_state)
     *
     */
    private Integer mtOrderState;

    /**
     * 状态 0 正常 1 异常
     */
    private Integer state;
    /**
     * 备注
     */
    private String remark;
    /**
     * 创建时间
     */
    private Date createTime;
    /**
     * 修改时间
     */
    private Date modifyTime;

}
